package com.study.designpartten.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

public class DynamicProxy {

    /**
     9      * public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces,InvocationHandler handler)
     10      * loader：
     11      *             一个ClassLoader对象，定义了由哪个ClassLoader对象，来对生产的代理进行加载。
     12      * interfaces：
     13      *             一个Interfaces数组，表示我将要给我所代理的对象提供一组什么样的接口，
     14      *             如果提供一组接口给它，那么该代理对象就宣称实现了该接口，从而可以调用接口中的方法。
     15      *             即，查找出真是主题类的所实现的所有的接口。
     16      * handler：
     17      *             一个InvocationHandler对象，表示当我这个动态代理对象在调用方法时，会关联到该InvocationHandler对象。
     18      *             该InvocationHandler与主题类有着关联。
     19      */
    public static <T> T newProxyInstance(ClassLoader classLoader, Class<?>[] interfaces, InvocationHandler handler){
        @SuppressWarnings("unchecked")
        T t = (T) Proxy.newProxyInstance(classLoader, interfaces, handler);
        return t;
    }
}
